function ViewModel() {

	var usuario = getSessionUser();
	var estadisticas = getSessionStats();
	this.nombre = ko.observable(usuario.nombre);
	this.email = ko.observable(usuario.email);
	this.carbon = ko.observable(estadisticas.carbon);
	this.plastico = ko.observable(estadisticas.plastico);
	this.puntuacion = ko.observable(estadisticas.rank);
	this.victorias = ko.observable(estadisticas.victorias);
	this.derrotas = ko.observable(estadisticas.derrotas);

}

function editar_usuarios() {
	this.nombre = $("#edita_nombre").val();
	this.email = $("#edita_email").val();
	this.carbon = $("#edita_carbon").val();
	this.plastico = $("#edita_plastico").val();
	this.victorias = $("#edita_victorias").val();
	this.derrotas = $("#edita_derrotas").val();
	//alert(this.victorias);
	//alert(this.derrotas);
}

function AppViewModel() {

	var usuario = getSessionUser();
	var estadisticas = getSessionStats();
	this.nombre = ko.observable(usuario.nombre);
	this.email = ko.observable(usuario.email);
	this.carbon = ko.observable(estadisticas.carbon);
	this.plastico = ko.observable(estadisticas.plastico);
	this.puntuacion = ko.observable(estadisticas.rank);
	this.victorias = ko.observable(estadisticas.victorias);
	this.derrotas = ko.observable(estadisticas.derrotas);

	this.cambiarClase = function() {
		$("#ed_maila").removeClass("visible");
		$("#ed_mail").addClass("visible");
	}
	this.cambiarClases = function() {
		$("#ed_passa").removeClass("visible");
		$("#ed_pass").addClass("visible");
	}

	this.editMail = function() {

		var mail = document.getElementById('new_mail').value;
		var exp = "^[a-z0-9.!\#$%&\'*+-/=?^_`{|}~]+@([0-9.]+|([^\s]+\.+[a-z]{2,6}))$";

		if (!(mail.match(exp))) {
			alert("Mail no valido");
		} else {

			var newpass = {
				mail : mail
			}
			$.ajax({
				data : newpass,
				url : '../includes/cambiarMail.php',
				global : false,
				type : "GET",
				dataType : "html",
				async : false,
			}).done(function(resultado) { 
				location.reload();
			});
		}
	}
	this.cancelar = function() {

		$("#ed_maila").addClass("visible");
		$("#ed_mail").removeClass("visible");
	}
	this.cancelar1 = function() {

		$("#ed_passa").addClass("visible");
		$("#ed_pass").removeClass("visible");
	}
	this.editPass = function(pass, newpass) {

		var newpass = document.getElementById('antigua').value;
		//newpass es la pass antigua
		var pass = document.getElementById('new_pass').value;
		//pass y pass1 son la nueva pass
		var pass1 = document.getElementById('pass').value;

		var user = getSessionUser();
		var userid = user.id

		var newpass = {
			id : userid,
			pass : pass,
			pass2 : pass1,
			newpass : newpass
		}
		$.ajax({
			data : newpass,
			url : '../includes/cambiarPass.php',
			global : false,
			type : "GET",
			dataType : "html",
			async : false,
		}).done(function(resultado) {
			//alert(resultado);

			if (resultado == "\"todo coincide\"") {
				alert("Password cambiado");
				location.reload();
			} else {
				if (resultado == "\"no ccoincide la antigua\"") {
					alert("Tu anterior contraseña no coincide");
				} else {
					alert("La nueva contraseña no coincide");
				}
			}

		});

	}
}

var MODELO = {
	Juego : function(nombre) {
		this.nombre = nombre;
		//this.usuarios = new MODELO.Usuarios();
		this.usuarios = [];
		this.noticias = [];

		this.editMail = function(mail) {
			var newpass = {
				mail : mail
			}
			$.ajax({
				data : newpass,
				url : '../includes/cambiarMail.php',
				global : false,
				type : "GET",
				dataType : "html",
				async : false,
			}).done(function(resultado) {
				alert("Cambiado");
			});
		}

		this.editPass = function(pass, newpass) {
			var newpass = {
				pass : pass,
				newpass : newpass
			}
			$.ajax({
				data : newpass,
				url : '../includes/cambiarPass.php',
				global : false,
				type : "GET",
				dataType : "html",
				async : false,
			}).done(function(resultado) {
				alert("Cambiado");
			});
		}

		this.nuevoUser = function(nick, email, pass) {
			this.nick = nick;
			this.email = email;
			this.pass = pass;
			var datos1 = {
				nick : this.nick,
				email : this.email,
				pass : this.pass
			}

			$.ajax({
				data : datos1,
				url : './includes/add_user.php',
				global : false,
				type : "GET",
				dataType : "html",
				async : false,
			}).done(function(resultado) {

			});

		}
		this.editarUser = function(id, nick, email, pass) {
			this.id = id;
			this.nick = nick;
			this.email = email;
			this.pass = pass;
			if (this.nick.length > 0) {
				var datos1 = {
					id : this.id,
					nick : this.nick
				}

				$.ajax({
					data : datos1,
					url : './includes/mod_nick.php',
					global : false,
					type : "GET",
					dataType : "html",
					async : false,
				}).done(function(resultado) {

				});
			}
			if (this.email.length > 1) {
				var datos1 = {
					id : this.id,
					email : this.email
				}
				$.ajax({
					data : datos1,
					url : './includes/mod_email.php',
					global : false,
					type : "GET",
					dataType : "html",
					async : false,
				}).done(function(resultado) {

				});
			}
			if (this.pass.length > 0) {
				var datos1 = {
					id : this.id,
					pass : this.pass
				}
				$.ajax({
					data : datos1,
					url : './includes/mod_pass.php',
					global : false,
					type : "GET",
					dataType : "html",
					async : false,
				}).done(function(resultado) {

				});
			}
		}

		this.deleteUser = function(id) {
			this.id = id;
			var datos1 = {
				id : this.id
			}
			$.ajax({
				data : datos1,
				url : './includes/remove_user.php',
				global : false,
				type : "GET",
				dataType : "html",
				async : false,
			}).done(function(resultado) {

			});
		}

		this.addNoticia = function(noticia) {
			this.noticias.push(noticia);
			return this;
		}

		this.addUsuario = function(usuario) {
			this.usuarios.push(usuario);
			return this;
		}
		this.toString = function() {
			var s = "";
			this.usuarios.forEach(function(usuario) {
				s += "\n\t" + usuario.toString();
			});
			return s;
		}
		this.toStringNot = function() {
			var s = "";
			this.noticias.forEach(function(noticia) {
				s += " " + noticia.toString();
			});
			return s;
		}
	},

	Usuario : function(id, nick, pass, email) {
		this.id = id;
		this.pass = pass;
		this.nick = nick;
		this.email = email;
		this.datos = [];

		this.addDatos = function(datos) {
			this.datos.push(datos);
			return this;
		}
		this.toString = function() {

			var s = this.id + " " + this.nick + " " + this.email + " " + this.pass;
			this.datos.forEach(function(datos) {
				s += " " + datos.toString() + "<br /><br /><br />";
			});
			return s;

		}
	},

	DatosPersonales : function(nombre, apellidos, dni, ocupacion, direccion, telefono, intereses) {
		this.nombre = nombre;
		this.apellidos = apellidos;
		this.dni = dni;
		this.ocupacion = ocupacion;
		this.direccion = direccion;
		this.telefono = telefono;
		this.intereses = intereses;

		this.toString = function() {
			var s = this.nombre + " " + this.apellidos + " " + this.dni + " " + this.ocupacion + " " + this.direccion + " " + this.telefono + " " + this.intereses;
			return s;

		}
	},

	Noticias : function(fecha, titulo, texto) {

		this.fecha = fecha;
		this.titulo = titulo;
		this.texto = texto;

		this.toString = function() {
			var s = this.fecha + " " + this.titulo + " " + this.texto;
			return s;
		}
	},

	Estadisticas : function(rank, victorias, derrotas, plastico, carbon) {

		this.rank = rank;
		this.victorias = victorias;
		this.derrotas = derrotas;
		this.plastico = plastico;
		this.carbon = carbon;

		this.toString = function() {
			var s = this.rank + " " + this.victorias + " " + this.derrotas + " " + this.plastico + " " + this.carbon;
			return s;
		}
	}
};
var stick_wars = new MODELO.Juego("Stick Wars");
var us1 = new MODELO.Usuario();
var datos1 = new MODELO.DatosPersonales("Pepe", "mi apellidos", 64564, "alguna", "calle 2 izquierda", 776, "las aficiones que sean");
var datos2 = new MODELO.DatosPersonales("lol", "paco", 11111, "0", "franco", 333, "sevilla");
var noticia = new MODELO.Noticias("10/10/10", "ola k ase", "programando o k ase");

//stick_wars.nuevoUser("123", "mettalrider", "klhsdalksa@dadsa.es", 543543, datos1);

//us1.addDatos(datos1);
//stick_wars.addNoticia(noticia);
//stick_wars.addUsuario(us1);

MODELO.Usuario.prototype = new MODELO.Usuario();
MODELO.DatosPersonales.prototype = new MODELO.DatosPersonales();
MODELO.Noticias.prototype = new MODELO.Noticias();
